
package net.qiqbframework.eventhandling;


import net.qiqbframework.messaging.annotation.MessageHandler;

import java.lang.annotation.*;

/**
 * 事件处理器，第一个参数是对应到事件具体对象
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@MessageHandler(messageType = EventMessage.class)
public @interface EventHandler {

    /**
     * 此命令处理器执行指定的名称。默认为有效负载类型的完全限定类名（即第一个参数）。
     *
     * @return
     */
    String eventName() default "";

    /**
     * 组名称。相同组名称的事 EventHandler 会建立一个事务
     *
     * @return
     */
    String groupName() default "";

    Class<?> payloadType() default Object.class;

    /**
     * 是否广播消费。同一个应用部署集群模式，此配置生效。
     *
     * @return true：所有实例都消费；false：保证一个实体消费
     */
    boolean broadcast() default false;
}
